package com.jt.controller;

import com.jt.pojo.User;
import com.jt.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController //将返回值转化为JSON
@CrossOrigin    //加到controller或者方法中

public class UserController {

    @Autowired
    private UserService userService;

    /**
     * URL: /addUser
     * method: post
     * 参数: form表单传参  name/age/sex
     * 返回值: 返回成功的字符信息
     */
    @PostMapping("/addUser")
    public String addUser(User user){

        userService.addUser(user);
        return "新增成功!!";
    }

    /**
     * 查询User表的全部数据
     * 请求路径: http://localhost:8090/getUser
     * 参数:     不需要参数
     * 返回值:  List<User>
     */
    @GetMapping("/getUser")
    public List<User> getUser(){

        List<User> userList = userService.getUser();
        return userList;
    }

    /**
     * 根据ID查询User对象
     * url: http://localhost:8080/getUserById?id=1
     */
    @GetMapping("/getUserById")
    public User getUserById(Integer id){
        return userService.getUserById(id);
    }

    @GetMapping("/user/{id}")
    public User getUser(
            @PathVariable
            Integer id
    ){
        return userService.getUserById(id);
    }

    @DeleteMapping("/user/{id}")
    public String deleteUser(
            @PathVariable
                    Integer id
    ){
        userService.deleteUser(id);
        return "删除数据ok";
    }

    /**
     * 接收post请求
     *  传递的参数是一个JSON串
     *     {"name":"黑熊精","age":3000,"sex":"男"}
     *  解决方案: 可以将JSON数据根据key:value 转化为对象(get/set方法)
     *  @RequestBody 注解将前端传的JSON串转换成对象
     * @ResponseBody 注解将对象转换成JSON串传到前端
     */
    @PostMapping("/addUser1")
    public String addUser1(@RequestBody User user){
        System.out.println(user);
        userService.addUser(user);
        return "新增数据OK";
    }


    @PostMapping("/addUserForm")
    public String addUserForm(User user){
        System.out.println(user);
        userService.addUser(user);
        return "新增数据OK";
    }

    @PostMapping("/user/{name}/{age}/{sex}")
    public String addUserRest(User user){

        userService.addUser(user);
        return "restFul入库成功!!!";
    }

    @PutMapping("/user/{id}/{name}")
    public String updateUser(User user){

        userService.updateUser(user);
        return "修改数据成功!!!";
    }


    /**
     * */
    @PutMapping("/updataUser")
    public String updataUser2(@RequestBody User user){
        userService.updataUser(user);
        return  "实现数据操作";
    }

}